/**
 *
 */
package com.storm.lib.util;

import java.util.Random;

/**
 * 类功能: Int工具类
 * @author johnny
 * @version 2010-12-2
 */
public class IntUtil {

	/**
	 *
	 * 方法功能:判断int是否在有效范围
	 * 更新时间:2010-12-2, 作者:johnny
	 * @param num
	 * @param startInt
	 * @param endInt
	 * @return
	 */
	public static boolean inRange(Integer num,int startInt, int endInt) {
		if(num==null){
			return false;
		}
		if(num.intValue()<startInt || num.intValue()>endInt){
			return false;
		}
		return true;
	}

	/**
	 *
	 * 方法功能:判断int是否在有效范围
	 * 更新时间:2010-12-2, 作者:johnny
	 * @param num
	 * @param startInt
	 * @param endInt
	 * @return
	 */
	public static boolean inRange(Short num,int startInt, int endInt) {
		if(num==null){
			return false;
		}
		if(num<startInt || num>endInt){
			return false;
		}
		return true;
	}

	/**
	 *
	 * 方法功能:获得随机数
	 * 更新时间:2010-12-2, 作者:johnny
	 * @param start
	 * @param end
	 * @return
	 */
	public static Integer getRandomInt(Integer start, Integer end) {
		if(start==null || end==null){
			return null;
		}
		if(start.intValue()==end.intValue()){
			return start;
		}
		Random r = new Random();
		//0,10
		int value = start+r.nextInt(end-start+1);
		return value;
	}

	/**
	 * 方法功能:得到和
	 * 更新时间:2010-12-21, 作者:johnny
	 * @param percentages
	 * @return
	 */
	public static int getSum(Integer[] percentages) {
		int sum=0;
		for (int i = 0; i < percentages.length; i++) {
			sum+=percentages[i];
		}
		return sum;
	}

	/**
	 * 方法功能:得到百分比,去整
	 * 更新时间:2011-1-25, 作者:johnny
	 * @param baseCost
	 * @param i
	 * @return
	 */
	public static int getPecentage(Integer val, int pecentage) {
		return DoubleUtil.toInt(1d*val*pecentage/100);
	}

	/**
	 * 方法功能:判断是否大于等于,否则抛出异常
	 * 更新时间:2011-2-21, 作者:johnny
	 * @param itemNum
	 * @param i
	 */
	public static void checkBiggerOrEqual(Integer itemNum, int target) {
		if(itemNum<target){
			ExceptionUtil.throwInvalidParamException();
		}

	}

	/**
	 * 方法功能:判断是否在列表
	 * 更新时间:2011-2-21, 作者:johnny
	 * @param integer
	 * @param is
	 */
	public static void checkInList(Integer integer, int[] is) {
		for (int i = 0; i < is.length; i++) {
			if(is[i]==integer.intValue()){
				return;
			}
		}
		ExceptionUtil.throwInvalidParamException();

	}

	public static String checkIntValue(String str){
		String err = "";
		int i = 0;
		try{
			i = Integer.valueOf(str);
		}catch (Exception e) {
			err = "数值类型错误";
		}
		if(i<0)
			err = "数值不能为负";
		return err;
	}

	public static String checkShortValue(String str){
		String err = "";
		int i = 0;
		try{
			i = Short.valueOf(str);
		}catch (Exception e) {
			err = "数值类型错误";
		}
		if(i<0)
			err = "数值不能为负";
		return err;
	}

	public static boolean notEquals(Integer int1, Integer int2) {
		if(equals(int1,int2)==false){
			return true;
		}
		return false;
	}


	private static boolean equals(Integer int1, Integer int2) {
		if(int1==null || int2==null){
			if(int1==null && int2==null){
				return true;
			}
			else{
				return false;
			}
		}
		if(int1.intValue() == int2.intValue()){
			return true;
		}
		return false;
	}

	/**
	 * 功能:从一个数组中随机取得一个
	 * @param ids
	 */
	public static int getRandomInArray(int[] ids) {
		int index = getRandomInt(0, ids.length-1);
		return ids[index];
	}

}
